import { IPSAppCodeList } from '../../app/codelist/ipsapp-code-list';
import { IPSAppDEField } from '../../app/dataentity/ipsapp-defield';
import { IPSMDControl2 } from '../ipsmdcontrol2';
import { IPSDEListDataItem } from './ipsdelist-data-item';
import { IPSDEListItem } from './ipsdelist-item';
import { IPSList } from './ipslist';

/**
 *
 * 继承父接口类型值[LIST]
 * @export
 * @interface IPSDEList
 */
export interface IPSDEList extends IPSList, IPSMDControl2 {
  /**
   * 分组模式
   * @description 值模式 [多数据部件分组模式] {NONE：无分组、 AUTO：自动分组、 CODELIST：分组代码表 }
   * @type {( string | 'NONE' | 'AUTO' | 'CODELIST')}
   */
  groupMode: string | 'NONE' | 'AUTO' | 'CODELIST';

  /**
   * 分组应用实体属性
   *
   * @type {IPSAppDEField}
   */
  getGroupPSAppDEField(): IPSAppDEField | null;

  /**
   * 分组代码表
   *
   * @type {IPSAppCodeList}
   */
  getGroupPSCodeList(): IPSAppCodeList | null;

  /**
   * 默认排序方向
   * @description 值模式 [字段排序方向] {ASC：升序、 DESC：降序 }
   * @type {( string | 'ASC' | 'DESC')}
   */
  minorSortDir: string | 'ASC' | 'DESC';

  /**
   * 默认排序应用实体属性
   *
   * @type {IPSAppDEField}
   */
  getMinorSortPSAppDEField(): IPSAppDEField | null;

  /**
   * 移动端列表样式
   * @description 值模式 [移动端多项数据控件样式] {ICONVIEW：图标视图、 LISTVIEW：列表视图、 SWIPERVIEW：图片滑动视图、 LISTVIEW2：列表视图（无刷新）、 LISTVIEW3：列表视图（无滑动）、 LISTVIEW4：列表视图（无背景）、 EXTVIEW1：扩展视图1、 EXTVIEW2：扩展视图2、 EXTVIEW3：扩展视图3、 EXTVIEW4：扩展视图4、 EXTVIEW5：扩展视图5 }
   * @type {( string | 'ICONVIEW' | 'LISTVIEW' | 'SWIPERVIEW' | 'LISTVIEW2' | 'LISTVIEW3' | 'LISTVIEW4' | 'EXTVIEW1' | 'EXTVIEW2' | 'EXTVIEW3' | 'EXTVIEW4' | 'EXTVIEW5')}
   */
  mobListStyle:
    | string
    | 'ICONVIEW'
    | 'LISTVIEW'
    | 'SWIPERVIEW'
    | 'LISTVIEW2'
    | 'LISTVIEW3'
    | 'LISTVIEW4'
    | 'EXTVIEW1'
    | 'EXTVIEW2'
    | 'EXTVIEW3'
    | 'EXTVIEW4'
    | 'EXTVIEW5';

  /**
   * 列表数据项集合
   *
   * @type {IPSDEListDataItem[]}
   */
  getPSDEListDataItems(): IPSDEListDataItem[] | null;

  findPSDEListDataItem(objKey: any): IPSDEListDataItem | null;

  /**
   * 列表项集合
   *
   * @type {IPSDEListItem[]}
   */
  getPSDEListItems(): IPSDEListItem[] | null;

  findPSDEListItem(objKey: any): IPSDEListItem | null;

  /**
   * 分页大小
   * @type {number}
   */
  pagingSize: number;

  /**
   * 启用分组
   * @type {boolean}
   */
  enableGroup: boolean;

  /**
   * 支持分页栏
   * @type {boolean}
   * @default false
   */
  enablePagingBar: boolean;

  /**
   * 支持行编辑
   * @type {boolean}
   */
  enableRowEdit: boolean;

  /**
   * 支持行分组调整
   * @type {boolean}
   */
  enableRowEditGroup: boolean;

  /**
   * 支持行次序调整
   * @type {boolean}
   */
  enableRowEditOrder: boolean;

  /**
   * 支持行新建
   * @type {boolean}
   */
  enableRowNew: boolean;

  /**
   * 默认禁用排序
   * @type {boolean}
   */
  noSort: boolean;

  /**
   * 显示头部
   * @type {boolean}
   */
  showHeader: boolean;
}
